<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>OpenMesh: OpenMesh::PolyMeshT&lt; Kernel &gt; Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="logo_align.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="rwth_vci_rgb.jpg"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">OpenMesh
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('a02389.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="a02386.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">OpenMesh::PolyMeshT&lt; Kernel &gt; Class Template Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Base type for a polygonal mesh.  
 <a href="a02389.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="a00386_source.html">OpenMesh/Mesh/PolyMeshT.hh</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for OpenMesh::PolyMeshT&lt; Kernel &gt;:</div>
<div class="dyncontent">
<div class="center"><img src="a02388.png" border="0" usemap="#OpenMesh_1_1PolyMeshT_3_01Kernel_01_4_inherit__map" alt="Inheritance graph"/></div>
<map name="OpenMesh_1_1PolyMeshT_3_01Kernel_01_4_inherit__map" id="OpenMesh_1_1PolyMeshT_3_01Kernel_01_4_inherit__map">
<area shape="rect" id="node3" href="a02385.html" title="Polygonal mesh based on the ArrayKernel. " alt="" coords="319,21,516,62"/>
<area shape="rect" id="node4" href="a02489.html" title="Base type for a triangle mesh. " alt="" coords="343,86,491,127"/>
<area shape="rect" id="node8" href="a02385.html" title="PolyMesh_ArrayKernelT\l\&lt; CustomTraitsVec2i \&gt;" alt="" coords="336,151,499,193"/>
<area shape="rect" id="node5" href="a02741.html" title="Triangle mesh based on the Kernel_OSG::ArrayKernelT. " alt="" coords="577,5,766,61"/>
<area shape="rect" id="node6" href="a02377.html" title="Triangle mesh based on the ArrayKernel. " alt="" coords="564,86,779,127"/>
<area shape="rect" id="node7" href="a02377.html" title="TriMesh_ArrayKernelT\l\&lt; CustomTraitsVec2i \&gt;" alt="" coords="592,151,751,193"/>
</map>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for OpenMesh::PolyMeshT&lt; Kernel &gt;:</div>
<div class="dyncontent">
<div class="center"><img src="a02387.png" border="0" usemap="#OpenMesh_1_1PolyMeshT_3_01Kernel_01_4_coll__map" alt="Collaboration graph"/></div>
<map name="OpenMesh_1_1PolyMeshT_3_01Kernel_01_4_coll__map" id="OpenMesh_1_1PolyMeshT_3_01Kernel_01_4_coll__map">
</map>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:aee8e212a032787407e4a543031840063"><td class="memItemLeft" align="right" valign="top"><a id="aee8e212a032787407e4a543031840063"></a>
typedef <a class="el" href="a02389.html">PolyMeshT</a>&lt; Kernel &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#aee8e212a032787407e4a543031840063">This</a></td></tr>
<tr class="memdesc:aee8e212a032787407e4a543031840063"><td class="mdescLeft">&#160;</td><td class="mdescRight">Self type. Used to specify iterators/circulators. <br /></td></tr>
<tr class="separator:aee8e212a032787407e4a543031840063"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0fc18e13d70825938274e3faf7b55e01"><td class="memItemLeft" align="right" valign="top"><a id="a0fc18e13d70825938274e3faf7b55e01"></a>
typedef Kernel::VertexHandle&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a0fc18e13d70825938274e3faf7b55e01">VertexHandle</a></td></tr>
<tr class="memdesc:a0fc18e13d70825938274e3faf7b55e01"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handle for referencing the corresponding item. <br /></td></tr>
<tr class="separator:a0fc18e13d70825938274e3faf7b55e01"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac364b18ba6ed17e4e6a6551787b2e2a3"><td class="memItemLeft" align="right" valign="top"><a id="ac364b18ba6ed17e4e6a6551787b2e2a3"></a>
typedef Kernel::HalfedgeHandle&#160;</td><td class="memItemRight" valign="bottom"><b>HalfedgeHandle</b></td></tr>
<tr class="separator:ac364b18ba6ed17e4e6a6551787b2e2a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1e3309b66b4cb3bf22b6229f20375ef2"><td class="memItemLeft" align="right" valign="top"><a id="a1e3309b66b4cb3bf22b6229f20375ef2"></a>
typedef Kernel::EdgeHandle&#160;</td><td class="memItemRight" valign="bottom"><b>EdgeHandle</b></td></tr>
<tr class="separator:a1e3309b66b4cb3bf22b6229f20375ef2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab4c0e43573d85661542b22cb4f4a1d11"><td class="memItemLeft" align="right" valign="top"><a id="ab4c0e43573d85661542b22cb4f4a1d11"></a>
typedef Kernel::FaceHandle&#160;</td><td class="memItemRight" valign="bottom"><b>FaceHandle</b></td></tr>
<tr class="separator:ab4c0e43573d85661542b22cb4f4a1d11"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb18d53e36e53e024c8506cd3c961096"><td class="memItemLeft" align="right" valign="top"><a id="afb18d53e36e53e024c8506cd3c961096"></a>
typedef Kernel::VertexIter&#160;</td><td class="memItemRight" valign="bottom"><b>VertexIter</b></td></tr>
<tr class="separator:afb18d53e36e53e024c8506cd3c961096"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae40d2dfe0d226e49d869481bbd40a911"><td class="memItemLeft" align="right" valign="top"><a id="ae40d2dfe0d226e49d869481bbd40a911"></a>
typedef Kernel::HalfedgeIter&#160;</td><td class="memItemRight" valign="bottom"><b>HalfedgeIter</b></td></tr>
<tr class="separator:ae40d2dfe0d226e49d869481bbd40a911"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac5250dba0f527b19bfa665a288b5d63d"><td class="memItemLeft" align="right" valign="top"><a id="ac5250dba0f527b19bfa665a288b5d63d"></a>
typedef Kernel::EdgeIter&#160;</td><td class="memItemRight" valign="bottom"><b>EdgeIter</b></td></tr>
<tr class="separator:ac5250dba0f527b19bfa665a288b5d63d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a34402ff0bd674fbad2685df22eecde64"><td class="memItemLeft" align="right" valign="top"><a id="a34402ff0bd674fbad2685df22eecde64"></a>
typedef Kernel::FaceIter&#160;</td><td class="memItemRight" valign="bottom"><b>FaceIter</b></td></tr>
<tr class="separator:a34402ff0bd674fbad2685df22eecde64"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acbad7fb3cfb4bad77153b9a8530a402f"><td class="memItemLeft" align="right" valign="top"><a id="acbad7fb3cfb4bad77153b9a8530a402f"></a>
typedef Kernel::ConstVertexIter&#160;</td><td class="memItemRight" valign="bottom"><b>ConstVertexIter</b></td></tr>
<tr class="separator:acbad7fb3cfb4bad77153b9a8530a402f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a85c57baa38e7e3d07bd7f3c7f194b354"><td class="memItemLeft" align="right" valign="top"><a id="a85c57baa38e7e3d07bd7f3c7f194b354"></a>
typedef Kernel::ConstHalfedgeIter&#160;</td><td class="memItemRight" valign="bottom"><b>ConstHalfedgeIter</b></td></tr>
<tr class="separator:a85c57baa38e7e3d07bd7f3c7f194b354"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aca72b40b26d4c76dfaec5e4191bdaa31"><td class="memItemLeft" align="right" valign="top"><a id="aca72b40b26d4c76dfaec5e4191bdaa31"></a>
typedef Kernel::ConstEdgeIter&#160;</td><td class="memItemRight" valign="bottom"><b>ConstEdgeIter</b></td></tr>
<tr class="separator:aca72b40b26d4c76dfaec5e4191bdaa31"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0a371650bb71152018ea1f3f570b465b"><td class="memItemLeft" align="right" valign="top"><a id="a0a371650bb71152018ea1f3f570b465b"></a>
typedef Kernel::ConstFaceIter&#160;</td><td class="memItemRight" valign="bottom"><b>ConstFaceIter</b></td></tr>
<tr class="separator:a0a371650bb71152018ea1f3f570b465b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Mesh Items</div></td></tr>
<tr class="memitem:a15372f27edf521d8e9028e2abccae342"><td class="memItemLeft" align="right" valign="top"><a id="a15372f27edf521d8e9028e2abccae342"></a>
typedef Kernel::Scalar&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a15372f27edf521d8e9028e2abccae342">Scalar</a></td></tr>
<tr class="memdesc:a15372f27edf521d8e9028e2abccae342"><td class="mdescLeft">&#160;</td><td class="mdescRight">Scalar type. <br /></td></tr>
<tr class="separator:a15372f27edf521d8e9028e2abccae342"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aed10fb4dfb536b53a5e20c8f2442eadf"><td class="memItemLeft" align="right" valign="top"><a id="aed10fb4dfb536b53a5e20c8f2442eadf"></a>
typedef Kernel::Point&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#aed10fb4dfb536b53a5e20c8f2442eadf">Point</a></td></tr>
<tr class="memdesc:aed10fb4dfb536b53a5e20c8f2442eadf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Coordinate type. <br /></td></tr>
<tr class="separator:aed10fb4dfb536b53a5e20c8f2442eadf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3570fd132d1ac589b380485cf59c9e0b"><td class="memItemLeft" align="right" valign="top"><a id="a3570fd132d1ac589b380485cf59c9e0b"></a>
typedef Kernel::Normal&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a3570fd132d1ac589b380485cf59c9e0b">Normal</a></td></tr>
<tr class="memdesc:a3570fd132d1ac589b380485cf59c9e0b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Normal type. <br /></td></tr>
<tr class="separator:a3570fd132d1ac589b380485cf59c9e0b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af0d8129bf1a819c468c6edcb13b5203b"><td class="memItemLeft" align="right" valign="top"><a id="af0d8129bf1a819c468c6edcb13b5203b"></a>
typedef Kernel::Color&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#af0d8129bf1a819c468c6edcb13b5203b">Color</a></td></tr>
<tr class="memdesc:af0d8129bf1a819c468c6edcb13b5203b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Color type. <br /></td></tr>
<tr class="separator:af0d8129bf1a819c468c6edcb13b5203b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af6526fbc3e7f3a1e98a5543b9563b021"><td class="memItemLeft" align="right" valign="top"><a id="af6526fbc3e7f3a1e98a5543b9563b021"></a>
typedef Kernel::TexCoord1D&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#af6526fbc3e7f3a1e98a5543b9563b021">TexCoord1D</a></td></tr>
<tr class="memdesc:af6526fbc3e7f3a1e98a5543b9563b021"><td class="mdescLeft">&#160;</td><td class="mdescRight">TexCoord1D type. <br /></td></tr>
<tr class="separator:af6526fbc3e7f3a1e98a5543b9563b021"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ae59536e97b43444c4f1622c645ebaf"><td class="memItemLeft" align="right" valign="top"><a id="a4ae59536e97b43444c4f1622c645ebaf"></a>
typedef Kernel::TexCoord2D&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a4ae59536e97b43444c4f1622c645ebaf">TexCoord2D</a></td></tr>
<tr class="memdesc:a4ae59536e97b43444c4f1622c645ebaf"><td class="mdescLeft">&#160;</td><td class="mdescRight">TexCoord2D type. <br /></td></tr>
<tr class="separator:a4ae59536e97b43444c4f1622c645ebaf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5ec24476d2513efe71ddd1255a2ca444"><td class="memItemLeft" align="right" valign="top"><a id="a5ec24476d2513efe71ddd1255a2ca444"></a>
typedef Kernel::TexCoord3D&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a5ec24476d2513efe71ddd1255a2ca444">TexCoord3D</a></td></tr>
<tr class="memdesc:a5ec24476d2513efe71ddd1255a2ca444"><td class="mdescLeft">&#160;</td><td class="mdescRight">TexCoord3D type. <br /></td></tr>
<tr class="separator:a5ec24476d2513efe71ddd1255a2ca444"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a03e6fd1a2fc91d4144374fd28dfbecee"><td class="memItemLeft" align="right" valign="top"><a id="a03e6fd1a2fc91d4144374fd28dfbecee"></a>
typedef Kernel::Vertex&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a03e6fd1a2fc91d4144374fd28dfbecee">Vertex</a></td></tr>
<tr class="memdesc:a03e6fd1a2fc91d4144374fd28dfbecee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Vertex type. <br /></td></tr>
<tr class="separator:a03e6fd1a2fc91d4144374fd28dfbecee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a249b0c195a81eeab341f7f73089d157e"><td class="memItemLeft" align="right" valign="top"><a id="a249b0c195a81eeab341f7f73089d157e"></a>
typedef Kernel::Halfedge&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a249b0c195a81eeab341f7f73089d157e">Halfedge</a></td></tr>
<tr class="memdesc:a249b0c195a81eeab341f7f73089d157e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Halfedge type. <br /></td></tr>
<tr class="separator:a249b0c195a81eeab341f7f73089d157e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab2ccdc42b7b25cf35915d3639fc461b2"><td class="memItemLeft" align="right" valign="top"><a id="ab2ccdc42b7b25cf35915d3639fc461b2"></a>
typedef Kernel::Edge&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#ab2ccdc42b7b25cf35915d3639fc461b2">Edge</a></td></tr>
<tr class="memdesc:ab2ccdc42b7b25cf35915d3639fc461b2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Edge type. <br /></td></tr>
<tr class="separator:ab2ccdc42b7b25cf35915d3639fc461b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a71e1e8eaabeb24eca04237931b4bea26"><td class="memItemLeft" align="right" valign="top"><a id="a71e1e8eaabeb24eca04237931b4bea26"></a>
typedef Kernel::Face&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a71e1e8eaabeb24eca04237931b4bea26">Face</a></td></tr>
<tr class="memdesc:a71e1e8eaabeb24eca04237931b4bea26"><td class="mdescLeft">&#160;</td><td class="mdescRight">Face type. <br /></td></tr>
<tr class="separator:a71e1e8eaabeb24eca04237931b4bea26"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Mesh Circulators</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>Refer to OpenMesh::Mesh::Iterators or <a class="el" href="a04328.html">Mesh Iterators and Circulators</a> for documentation. </p>
</div></td></tr>
<tr class="memitem:adc7d422e2ce13141e8291f7d29f7ecef"><td class="memItemLeft" align="right" valign="top"><a id="adc7d422e2ce13141e8291f7d29f7ecef"></a>
typedef Kernel::VertexVertexIter&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#adc7d422e2ce13141e8291f7d29f7ecef">VertexVertexIter</a></td></tr>
<tr class="memdesc:adc7d422e2ce13141e8291f7d29f7ecef"><td class="mdescLeft">&#160;</td><td class="mdescRight">Circulator. <br /></td></tr>
<tr class="separator:adc7d422e2ce13141e8291f7d29f7ecef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6549eda743520c8a7aa3dfe6a37b2468"><td class="memItemLeft" align="right" valign="top"><a id="a6549eda743520c8a7aa3dfe6a37b2468"></a>
typedef Kernel::VertexOHalfedgeIter&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a6549eda743520c8a7aa3dfe6a37b2468">VertexOHalfedgeIter</a></td></tr>
<tr class="memdesc:a6549eda743520c8a7aa3dfe6a37b2468"><td class="mdescLeft">&#160;</td><td class="mdescRight">Circulator. <br /></td></tr>
<tr class="separator:a6549eda743520c8a7aa3dfe6a37b2468"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a437621f3901a93d0ebf8cdceac8e2939"><td class="memItemLeft" align="right" valign="top"><a id="a437621f3901a93d0ebf8cdceac8e2939"></a>
typedef Kernel::VertexIHalfedgeIter&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a437621f3901a93d0ebf8cdceac8e2939">VertexIHalfedgeIter</a></td></tr>
<tr class="memdesc:a437621f3901a93d0ebf8cdceac8e2939"><td class="mdescLeft">&#160;</td><td class="mdescRight">Circulator. <br /></td></tr>
<tr class="separator:a437621f3901a93d0ebf8cdceac8e2939"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a68dd0d2773f837cbfb525d7208dedde0"><td class="memItemLeft" align="right" valign="top"><a id="a68dd0d2773f837cbfb525d7208dedde0"></a>
typedef Kernel::VertexEdgeIter&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a68dd0d2773f837cbfb525d7208dedde0">VertexEdgeIter</a></td></tr>
<tr class="memdesc:a68dd0d2773f837cbfb525d7208dedde0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Circulator. <br /></td></tr>
<tr class="separator:a68dd0d2773f837cbfb525d7208dedde0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1ebe8b94ca30db3af44c809ab3ee7247"><td class="memItemLeft" align="right" valign="top"><a id="a1ebe8b94ca30db3af44c809ab3ee7247"></a>
typedef Kernel::VertexFaceIter&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a1ebe8b94ca30db3af44c809ab3ee7247">VertexFaceIter</a></td></tr>
<tr class="memdesc:a1ebe8b94ca30db3af44c809ab3ee7247"><td class="mdescLeft">&#160;</td><td class="mdescRight">Circulator. <br /></td></tr>
<tr class="separator:a1ebe8b94ca30db3af44c809ab3ee7247"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3c65ec045ac0126b3ea7264cee26aa1b"><td class="memItemLeft" align="right" valign="top"><a id="a3c65ec045ac0126b3ea7264cee26aa1b"></a>
typedef Kernel::FaceVertexIter&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a3c65ec045ac0126b3ea7264cee26aa1b">FaceVertexIter</a></td></tr>
<tr class="memdesc:a3c65ec045ac0126b3ea7264cee26aa1b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Circulator. <br /></td></tr>
<tr class="separator:a3c65ec045ac0126b3ea7264cee26aa1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeca99c6cd952038e80b37c848035af73"><td class="memItemLeft" align="right" valign="top"><a id="aeca99c6cd952038e80b37c848035af73"></a>
typedef Kernel::FaceHalfedgeIter&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#aeca99c6cd952038e80b37c848035af73">FaceHalfedgeIter</a></td></tr>
<tr class="memdesc:aeca99c6cd952038e80b37c848035af73"><td class="mdescLeft">&#160;</td><td class="mdescRight">Circulator. <br /></td></tr>
<tr class="separator:aeca99c6cd952038e80b37c848035af73"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a04a30000943150f98db373a3317760af"><td class="memItemLeft" align="right" valign="top"><a id="a04a30000943150f98db373a3317760af"></a>
typedef Kernel::FaceEdgeIter&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a04a30000943150f98db373a3317760af">FaceEdgeIter</a></td></tr>
<tr class="memdesc:a04a30000943150f98db373a3317760af"><td class="mdescLeft">&#160;</td><td class="mdescRight">Circulator. <br /></td></tr>
<tr class="separator:a04a30000943150f98db373a3317760af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a98618ca3fd3eec347bb5b02410a5e1e6"><td class="memItemLeft" align="right" valign="top"><a id="a98618ca3fd3eec347bb5b02410a5e1e6"></a>
typedef Kernel::FaceFaceIter&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a98618ca3fd3eec347bb5b02410a5e1e6">FaceFaceIter</a></td></tr>
<tr class="memdesc:a98618ca3fd3eec347bb5b02410a5e1e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Circulator. <br /></td></tr>
<tr class="separator:a98618ca3fd3eec347bb5b02410a5e1e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a17a73f876343905c8b37b947e9152ac8"><td class="memItemLeft" align="right" valign="top"><a id="a17a73f876343905c8b37b947e9152ac8"></a>
typedef Kernel::ConstVertexVertexIter&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a17a73f876343905c8b37b947e9152ac8">ConstVertexVertexIter</a></td></tr>
<tr class="memdesc:a17a73f876343905c8b37b947e9152ac8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Circulator. <br /></td></tr>
<tr class="separator:a17a73f876343905c8b37b947e9152ac8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acf4b52db4b0198a91a02c06003623bfb"><td class="memItemLeft" align="right" valign="top"><a id="acf4b52db4b0198a91a02c06003623bfb"></a>
typedef Kernel::ConstVertexOHalfedgeIter&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#acf4b52db4b0198a91a02c06003623bfb">ConstVertexOHalfedgeIter</a></td></tr>
<tr class="memdesc:acf4b52db4b0198a91a02c06003623bfb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Circulator. <br /></td></tr>
<tr class="separator:acf4b52db4b0198a91a02c06003623bfb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7221db878118b37611454a13f1754a08"><td class="memItemLeft" align="right" valign="top"><a id="a7221db878118b37611454a13f1754a08"></a>
typedef Kernel::ConstVertexIHalfedgeIter&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a7221db878118b37611454a13f1754a08">ConstVertexIHalfedgeIter</a></td></tr>
<tr class="memdesc:a7221db878118b37611454a13f1754a08"><td class="mdescLeft">&#160;</td><td class="mdescRight">Circulator. <br /></td></tr>
<tr class="separator:a7221db878118b37611454a13f1754a08"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9ccd0ce4fff127b13eb80fafefda0d0a"><td class="memItemLeft" align="right" valign="top"><a id="a9ccd0ce4fff127b13eb80fafefda0d0a"></a>
typedef Kernel::ConstVertexEdgeIter&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a9ccd0ce4fff127b13eb80fafefda0d0a">ConstVertexEdgeIter</a></td></tr>
<tr class="memdesc:a9ccd0ce4fff127b13eb80fafefda0d0a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Circulator. <br /></td></tr>
<tr class="separator:a9ccd0ce4fff127b13eb80fafefda0d0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a61167f0a130e599b909cc8629a6dca2a"><td class="memItemLeft" align="right" valign="top"><a id="a61167f0a130e599b909cc8629a6dca2a"></a>
typedef Kernel::ConstVertexFaceIter&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a61167f0a130e599b909cc8629a6dca2a">ConstVertexFaceIter</a></td></tr>
<tr class="memdesc:a61167f0a130e599b909cc8629a6dca2a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Circulator. <br /></td></tr>
<tr class="separator:a61167f0a130e599b909cc8629a6dca2a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a23b20f8208bae0aa1b344cac48c1f635"><td class="memItemLeft" align="right" valign="top"><a id="a23b20f8208bae0aa1b344cac48c1f635"></a>
typedef Kernel::ConstFaceVertexIter&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a23b20f8208bae0aa1b344cac48c1f635">ConstFaceVertexIter</a></td></tr>
<tr class="memdesc:a23b20f8208bae0aa1b344cac48c1f635"><td class="mdescLeft">&#160;</td><td class="mdescRight">Circulator. <br /></td></tr>
<tr class="separator:a23b20f8208bae0aa1b344cac48c1f635"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b0729c26d7cf8f123c344a3b81d353c"><td class="memItemLeft" align="right" valign="top"><a id="a1b0729c26d7cf8f123c344a3b81d353c"></a>
typedef Kernel::ConstFaceHalfedgeIter&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a1b0729c26d7cf8f123c344a3b81d353c">ConstFaceHalfedgeIter</a></td></tr>
<tr class="memdesc:a1b0729c26d7cf8f123c344a3b81d353c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Circulator. <br /></td></tr>
<tr class="separator:a1b0729c26d7cf8f123c344a3b81d353c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5e15960d27e6d40646260109f5910b5b"><td class="memItemLeft" align="right" valign="top"><a id="a5e15960d27e6d40646260109f5910b5b"></a>
typedef Kernel::ConstFaceEdgeIter&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a5e15960d27e6d40646260109f5910b5b">ConstFaceEdgeIter</a></td></tr>
<tr class="memdesc:a5e15960d27e6d40646260109f5910b5b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Circulator. <br /></td></tr>
<tr class="separator:a5e15960d27e6d40646260109f5910b5b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af081cbe692a0563c1ce08735f4b3491e"><td class="memItemLeft" align="right" valign="top"><a id="af081cbe692a0563c1ce08735f4b3491e"></a>
typedef Kernel::ConstFaceFaceIter&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#af081cbe692a0563c1ce08735f4b3491e">ConstFaceFaceIter</a></td></tr>
<tr class="memdesc:af081cbe692a0563c1ce08735f4b3491e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Circulator. <br /></td></tr>
<tr class="separator:af081cbe692a0563c1ce08735f4b3491e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a4acbc73f0f0f4f55fd688b64a22a2a85"><td class="memTemplParams" colspan="2"><a id="a4acbc73f0f0f4f55fd688b64a22a2a85"></a>
template&lt;typename T &gt; </td></tr>
<tr class="memitem:a4acbc73f0f0f4f55fd688b64a22a2a85"><td class="memTemplItemLeft" align="right" valign="top">&#160;</td><td class="memTemplItemRight" valign="bottom"><b>PolyMeshT</b> (const T &amp;t)</td></tr>
<tr class="separator:a4acbc73f0f0f4f55fd688b64a22a2a85"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4021a6310529dac06a6969967a7d3986"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a02405.html">SmartVertexHandle</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a4021a6310529dac06a6969967a7d3986">new_vertex</a> ()</td></tr>
<tr class="memdesc:a4021a6310529dac06a6969967a7d3986"><td class="mdescLeft">&#160;</td><td class="mdescRight">Uses default copy and assignment operator.  <a href="#a4021a6310529dac06a6969967a7d3986">More...</a><br /></td></tr>
<tr class="separator:a4021a6310529dac06a6969967a7d3986"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7458a95c0f4512e7e571edc18b1b839b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a02405.html">SmartVertexHandle</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a7458a95c0f4512e7e571edc18b1b839b">new_vertex</a> (const <a class="el" href="a02389.html#aed10fb4dfb536b53a5e20c8f2442eadf">Point</a> &amp;_p)</td></tr>
<tr class="memdesc:a7458a95c0f4512e7e571edc18b1b839b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds a new vertex initialized to a custom position.  <a href="#a7458a95c0f4512e7e571edc18b1b839b">More...</a><br /></td></tr>
<tr class="separator:a7458a95c0f4512e7e571edc18b1b839b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae805ccd544a6b1e3b7c963e15eff7afd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a02405.html">SmartVertexHandle</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#ae805ccd544a6b1e3b7c963e15eff7afd">new_vertex_dirty</a> (const <a class="el" href="a02389.html#aed10fb4dfb536b53a5e20c8f2442eadf">Point</a> &amp;_p)</td></tr>
<tr class="memdesc:ae805ccd544a6b1e3b7c963e15eff7afd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Same as <a class="el" href="a02389.html#a7458a95c0f4512e7e571edc18b1b839b" title="Adds a new vertex initialized to a custom position. ">new_vertex(const Point&amp;)</a> but never shrinks, only enlarges the vertex property vectors.  <a href="#ae805ccd544a6b1e3b7c963e15eff7afd">More...</a><br /></td></tr>
<tr class="separator:ae805ccd544a6b1e3b7c963e15eff7afd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5338335bff53d9b88afc14634c456908"><td class="memItemLeft" align="right" valign="top"><a id="a5338335bff53d9b88afc14634c456908"></a>
<a class="el" href="a02405.html">SmartVertexHandle</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a5338335bff53d9b88afc14634c456908">add_vertex</a> (const <a class="el" href="a02389.html#aed10fb4dfb536b53a5e20c8f2442eadf">Point</a> &amp;_p)</td></tr>
<tr class="memdesc:a5338335bff53d9b88afc14634c456908"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alias for <a class="el" href="a02389.html#a7458a95c0f4512e7e571edc18b1b839b" title="Adds a new vertex initialized to a custom position. ">new_vertex(const Point&amp;)</a>. <br /></td></tr>
<tr class="separator:a5338335bff53d9b88afc14634c456908"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a138e4a22051ec38d4e9bb482c0e9bef9"><td class="memItemLeft" align="right" valign="top"><a id="a138e4a22051ec38d4e9bb482c0e9bef9"></a>
<a class="el" href="a02405.html">SmartVertexHandle</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a138e4a22051ec38d4e9bb482c0e9bef9">add_vertex_dirty</a> (const <a class="el" href="a02389.html#aed10fb4dfb536b53a5e20c8f2442eadf">Point</a> &amp;_p)</td></tr>
<tr class="memdesc:a138e4a22051ec38d4e9bb482c0e9bef9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alias for <a class="el" href="a02389.html#ae805ccd544a6b1e3b7c963e15eff7afd" title="Same as new_vertex(const Point&amp;) but never shrinks, only enlarges the vertex property vectors...">new_vertex_dirty()</a>. <br /></td></tr>
<tr class="separator:a138e4a22051ec38d4e9bb482c0e9bef9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aae070e1f6f0df8885d85b48916e043b5"><td class="memItemLeft" align="right" valign="top"><a id="aae070e1f6f0df8885d85b48916e043b5"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#aae070e1f6f0df8885d85b48916e043b5">calc_edge_vector</a> (EdgeHandle _eh, <a class="el" href="a02389.html#a3570fd132d1ac589b380485cf59c9e0b">Normal</a> &amp;_edge_vec) const</td></tr>
<tr class="memdesc:aae070e1f6f0df8885d85b48916e043b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates the edge vector as the vector defined by the halfedge with id #0 (see below) <br /></td></tr>
<tr class="separator:aae070e1f6f0df8885d85b48916e043b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9c41a7e7c5c21683e89128d526d224d6"><td class="memItemLeft" align="right" valign="top"><a id="a9c41a7e7c5c21683e89128d526d224d6"></a>
<a class="el" href="a02389.html#a3570fd132d1ac589b380485cf59c9e0b">Normal</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a9c41a7e7c5c21683e89128d526d224d6">calc_edge_vector</a> (EdgeHandle _eh) const</td></tr>
<tr class="memdesc:a9c41a7e7c5c21683e89128d526d224d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates the edge vector as the vector defined by the halfedge with id #0 (see below) <br /></td></tr>
<tr class="separator:a9c41a7e7c5c21683e89128d526d224d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1898718c80e93e8579d30b61cfd29e83"><td class="memItemLeft" align="right" valign="top"><a id="a1898718c80e93e8579d30b61cfd29e83"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a1898718c80e93e8579d30b61cfd29e83">calc_edge_vector</a> (HalfedgeHandle _heh, <a class="el" href="a02389.html#a3570fd132d1ac589b380485cf59c9e0b">Normal</a> &amp;_edge_vec) const</td></tr>
<tr class="memdesc:a1898718c80e93e8579d30b61cfd29e83"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates the edge vector as the difference of the the points defined by to_vertex_handle() and from_vertex_handle() <br /></td></tr>
<tr class="separator:a1898718c80e93e8579d30b61cfd29e83"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad6182b437be445cb682f25d105de4e13"><td class="memItemLeft" align="right" valign="top"><a id="ad6182b437be445cb682f25d105de4e13"></a>
<a class="el" href="a02389.html#a3570fd132d1ac589b380485cf59c9e0b">Normal</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#ad6182b437be445cb682f25d105de4e13">calc_edge_vector</a> (HalfedgeHandle _heh) const</td></tr>
<tr class="memdesc:ad6182b437be445cb682f25d105de4e13"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates the edge vector as the difference of the the points defined by to_vertex_handle() and from_vertex_handle() <br /></td></tr>
<tr class="separator:ad6182b437be445cb682f25d105de4e13"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7d170b57c860a510e4d430efc873f1a0"><td class="memItemLeft" align="right" valign="top"><a id="a7d170b57c860a510e4d430efc873f1a0"></a>
<a class="el" href="a02389.html#a15372f27edf521d8e9028e2abccae342">Scalar</a>&#160;</td><td class="memItemRight" valign="bottom"><b>calc_edge_length</b> (EdgeHandle _eh) const</td></tr>
<tr class="separator:a7d170b57c860a510e4d430efc873f1a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aea5a895c076f3e8ce17a5b82df1b4752"><td class="memItemLeft" align="right" valign="top"><a id="aea5a895c076f3e8ce17a5b82df1b4752"></a>
<a class="el" href="a02389.html#a15372f27edf521d8e9028e2abccae342">Scalar</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#aea5a895c076f3e8ce17a5b82df1b4752">calc_edge_length</a> (HalfedgeHandle _heh) const</td></tr>
<tr class="memdesc:aea5a895c076f3e8ce17a5b82df1b4752"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates the length of the edge _heh. <br /></td></tr>
<tr class="separator:aea5a895c076f3e8ce17a5b82df1b4752"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada9e865f77dda5a394622a49f7b96563"><td class="memItemLeft" align="right" valign="top"><a id="ada9e865f77dda5a394622a49f7b96563"></a>
<a class="el" href="a02389.html#a15372f27edf521d8e9028e2abccae342">Scalar</a>&#160;</td><td class="memItemRight" valign="bottom"><b>calc_edge_sqr_length</b> (EdgeHandle _eh) const</td></tr>
<tr class="separator:ada9e865f77dda5a394622a49f7b96563"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9dd2e211b61a147b6e90ce4dbf616269"><td class="memItemLeft" align="right" valign="top"><a id="a9dd2e211b61a147b6e90ce4dbf616269"></a>
<a class="el" href="a02389.html#a15372f27edf521d8e9028e2abccae342">Scalar</a>&#160;</td><td class="memItemRight" valign="bottom"><b>calc_edge_sqr_length</b> (HalfedgeHandle _heh) const</td></tr>
<tr class="separator:a9dd2e211b61a147b6e90ce4dbf616269"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adc46bbba1ed1b6b591f2d7747c05a586"><td class="memItemLeft" align="right" valign="top"><a id="adc46bbba1ed1b6b591f2d7747c05a586"></a>
<a class="el" href="a02389.html#aed10fb4dfb536b53a5e20c8f2442eadf">Point</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#adc46bbba1ed1b6b591f2d7747c05a586">calc_edge_midpoint</a> (HalfedgeHandle _heh) const</td></tr>
<tr class="memdesc:adc46bbba1ed1b6b591f2d7747c05a586"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates the midpoint of the halfedge _heh, defined by the positions of the two incident vertices. <br /></td></tr>
<tr class="separator:adc46bbba1ed1b6b591f2d7747c05a586"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3fdf02683a7d1055f8d88e179ea3fd3f"><td class="memItemLeft" align="right" valign="top"><a id="a3fdf02683a7d1055f8d88e179ea3fd3f"></a>
<a class="el" href="a02389.html#aed10fb4dfb536b53a5e20c8f2442eadf">Point</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a3fdf02683a7d1055f8d88e179ea3fd3f">calc_edge_midpoint</a> (EdgeHandle _eh) const</td></tr>
<tr class="memdesc:a3fdf02683a7d1055f8d88e179ea3fd3f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates the midpoint of the edge _eh, defined by the positions of the two incident vertices. <br /></td></tr>
<tr class="separator:a3fdf02683a7d1055f8d88e179ea3fd3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a77f37d03601248cddc2fd4b61f77fcb0"><td class="memItemLeft" align="right" valign="top"><a id="a77f37d03601248cddc2fd4b61f77fcb0"></a>
<a class="el" href="a02389.html#a3570fd132d1ac589b380485cf59c9e0b">Normal</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a77f37d03601248cddc2fd4b61f77fcb0">calc_normal</a> (EdgeHandle _eh) const</td></tr>
<tr class="memdesc:a77f37d03601248cddc2fd4b61f77fcb0"><td class="mdescLeft">&#160;</td><td class="mdescRight">calculated and returns the average of the two vertex normals <br /></td></tr>
<tr class="separator:a77f37d03601248cddc2fd4b61f77fcb0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a96377dfb9dca48a0648b5c0698795e1a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a96377dfb9dca48a0648b5c0698795e1a">calc_sector_vectors</a> (HalfedgeHandle _in_heh, <a class="el" href="a02389.html#a3570fd132d1ac589b380485cf59c9e0b">Normal</a> &amp;_vec0, <a class="el" href="a02389.html#a3570fd132d1ac589b380485cf59c9e0b">Normal</a> &amp;_vec1) const</td></tr>
<tr class="memdesc:a96377dfb9dca48a0648b5c0698795e1a"><td class="mdescLeft">&#160;</td><td class="mdescRight">defines a consistent representation of a sector geometry: the halfedge _in_heh defines the sector orientation the vertex pointed by _in_heh defines the sector center _vec0 and _vec1 are resp.  <a href="#a96377dfb9dca48a0648b5c0698795e1a">More...</a><br /></td></tr>
<tr class="separator:a96377dfb9dca48a0648b5c0698795e1a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5d3d49f23d5be7cebd2107a6363bcedd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a02389.html#a15372f27edf521d8e9028e2abccae342">Scalar</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a5d3d49f23d5be7cebd2107a6363bcedd">calc_sector_angle</a> (HalfedgeHandle _in_heh) const</td></tr>
<tr class="memdesc:a5d3d49f23d5be7cebd2107a6363bcedd"><td class="mdescLeft">&#160;</td><td class="mdescRight">calculates the sector angle.  <a href="#a5d3d49f23d5be7cebd2107a6363bcedd">More...</a><br /></td></tr>
<tr class="separator:a5d3d49f23d5be7cebd2107a6363bcedd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ace85d620312f88395ae3b737f2abaece"><td class="memItemLeft" align="right" valign="top"><a id="ace85d620312f88395ae3b737f2abaece"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#ace85d620312f88395ae3b737f2abaece">calc_sector_normal</a> (HalfedgeHandle _in_heh, <a class="el" href="a02389.html#a3570fd132d1ac589b380485cf59c9e0b">Normal</a> &amp;_sector_normal) const</td></tr>
<tr class="memdesc:ace85d620312f88395ae3b737f2abaece"><td class="mdescLeft">&#160;</td><td class="mdescRight">calculates the normal (non-normalized) of the face sector defined by the angle &lt;(_in_heh,next_halfedge(_in_heh)) <br /></td></tr>
<tr class="separator:ace85d620312f88395ae3b737f2abaece"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4babf1e8370fcb01b07596819ac167dc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a02389.html#a15372f27edf521d8e9028e2abccae342">Scalar</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a4babf1e8370fcb01b07596819ac167dc">calc_sector_area</a> (HalfedgeHandle _in_heh) const</td></tr>
<tr class="memdesc:a4babf1e8370fcb01b07596819ac167dc"><td class="mdescLeft">&#160;</td><td class="mdescRight">calculates the area of the face sector defined by the angle &lt;(_in_heh,next_halfedge(_in_heh)) NOTE: special cases (e.g.  <a href="#a4babf1e8370fcb01b07596819ac167dc">More...</a><br /></td></tr>
<tr class="separator:a4babf1e8370fcb01b07596819ac167dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afe704b0dc13787fbc73913a39d168d53"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a02389.html#a15372f27edf521d8e9028e2abccae342">Scalar</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#afe704b0dc13787fbc73913a39d168d53">calc_dihedral_angle_fast</a> (HalfedgeHandle _heh) const</td></tr>
<tr class="memdesc:afe704b0dc13787fbc73913a39d168d53"><td class="mdescLeft">&#160;</td><td class="mdescRight">calculates the dihedral angle on the halfedge _heh  <a href="#afe704b0dc13787fbc73913a39d168d53">More...</a><br /></td></tr>
<tr class="separator:afe704b0dc13787fbc73913a39d168d53"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab8cd3845b89840da203e1347f68516f2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a02389.html#a15372f27edf521d8e9028e2abccae342">Scalar</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#ab8cd3845b89840da203e1347f68516f2">calc_dihedral_angle_fast</a> (EdgeHandle _eh) const</td></tr>
<tr class="memdesc:ab8cd3845b89840da203e1347f68516f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">calculates the dihedral angle on the edge _eh  <a href="#ab8cd3845b89840da203e1347f68516f2">More...</a><br /></td></tr>
<tr class="separator:ab8cd3845b89840da203e1347f68516f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6ebf165bf54cb04edcf1a9ab9da6b8f4"><td class="memItemLeft" align="right" valign="top"><a id="a6ebf165bf54cb04edcf1a9ab9da6b8f4"></a>
<a class="el" href="a02389.html#a15372f27edf521d8e9028e2abccae342">Scalar</a>&#160;</td><td class="memItemRight" valign="bottom"><b>calc_dihedral_angle</b> (HalfedgeHandle _heh) const</td></tr>
<tr class="separator:a6ebf165bf54cb04edcf1a9ab9da6b8f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a31902d81a7069fdc6148c713626b53e0"><td class="memItemLeft" align="right" valign="top"><a id="a31902d81a7069fdc6148c713626b53e0"></a>
<a class="el" href="a02389.html#a15372f27edf521d8e9028e2abccae342">Scalar</a>&#160;</td><td class="memItemRight" valign="bottom"><b>calc_dihedral_angle</b> (EdgeHandle _eh) const</td></tr>
<tr class="separator:a31902d81a7069fdc6148c713626b53e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5a52366a97b3c87ab3473c476f221e22"><td class="memItemLeft" align="right" valign="top"><a id="a5a52366a97b3c87ab3473c476f221e22"></a>
unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a5a52366a97b3c87ab3473c476f221e22">find_feature_edges</a> (<a class="el" href="a02389.html#a15372f27edf521d8e9028e2abccae342">Scalar</a> _angle_tresh=OpenMesh::deg_to_rad(44.0))</td></tr>
<tr class="memdesc:a5a52366a97b3c87ab3473c476f221e22"><td class="mdescLeft">&#160;</td><td class="mdescRight">tags an edge as a feature if its dihedral angle is larger than _angle_tresh returns the number of the found feature edges, requires edge_status property <br /></td></tr>
<tr class="separator:a5a52366a97b3c87ab3473c476f221e22"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af0bd67ac6c4c3fa8707191dcf28b7649"><td class="memItemLeft" align="right" valign="top"><a id="af0bd67ac6c4c3fa8707191dcf28b7649"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#af0bd67ac6c4c3fa8707191dcf28b7649">split</a> (FaceHandle _fh, const <a class="el" href="a02389.html#aed10fb4dfb536b53a5e20c8f2442eadf">Point</a> &amp;_p)</td></tr>
<tr class="memdesc:af0bd67ac6c4c3fa8707191dcf28b7649"><td class="mdescLeft">&#160;</td><td class="mdescRight">Face split (= 1-to-n split) <br /></td></tr>
<tr class="separator:af0bd67ac6c4c3fa8707191dcf28b7649"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a48712f39ad55c72ab48bf1127b6113bf"><td class="memItemLeft" align="right" valign="top"><a id="a48712f39ad55c72ab48bf1127b6113bf"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>split</b> (FaceHandle _fh, <a class="el" href="a02389.html#a0fc18e13d70825938274e3faf7b55e01">VertexHandle</a> _vh)</td></tr>
<tr class="separator:a48712f39ad55c72ab48bf1127b6113bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac198e4c43d5baf73b85557eaa48cc722"><td class="memItemLeft" align="right" valign="top"><a id="ac198e4c43d5baf73b85557eaa48cc722"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>split</b> (EdgeHandle _eh, const <a class="el" href="a02389.html#aed10fb4dfb536b53a5e20c8f2442eadf">Point</a> &amp;_p)</td></tr>
<tr class="separator:ac198e4c43d5baf73b85557eaa48cc722"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adf9763c2328f9c70113da70f8fdc60c4"><td class="memItemLeft" align="right" valign="top"><a id="adf9763c2328f9c70113da70f8fdc60c4"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>split</b> (EdgeHandle _eh, <a class="el" href="a02389.html#a0fc18e13d70825938274e3faf7b55e01">VertexHandle</a> _vh)</td></tr>
<tr class="separator:adf9763c2328f9c70113da70f8fdc60c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Normal vector computation</div></td></tr>
<tr class="memitem:a601f21014e50bd5a2243b0e4849c9c14"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a601f21014e50bd5a2243b0e4849c9c14">update_normals</a> ()</td></tr>
<tr class="memdesc:a601f21014e50bd5a2243b0e4849c9c14"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compute normals for all primitives.  <a href="#a601f21014e50bd5a2243b0e4849c9c14">More...</a><br /></td></tr>
<tr class="separator:a601f21014e50bd5a2243b0e4849c9c14"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab7b40ea47b87d63d3f7a4a448b2a5a8d"><td class="memItemLeft" align="right" valign="top"><a id="ab7b40ea47b87d63d3f7a4a448b2a5a8d"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#ab7b40ea47b87d63d3f7a4a448b2a5a8d">update_normal</a> (FaceHandle _fh)</td></tr>
<tr class="memdesc:ab7b40ea47b87d63d3f7a4a448b2a5a8d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update normal for face _fh. <br /></td></tr>
<tr class="separator:ab7b40ea47b87d63d3f7a4a448b2a5a8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5677ec057717fece1bc3c7abbf93cbdf"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a5677ec057717fece1bc3c7abbf93cbdf">update_face_normals</a> ()</td></tr>
<tr class="memdesc:a5677ec057717fece1bc3c7abbf93cbdf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update normal vectors for all faces.  <a href="#a5677ec057717fece1bc3c7abbf93cbdf">More...</a><br /></td></tr>
<tr class="separator:a5677ec057717fece1bc3c7abbf93cbdf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a76730c9a65bfd6cf23972baa191a40cd"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="a02389.html#a3570fd132d1ac589b380485cf59c9e0b">Normal</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a76730c9a65bfd6cf23972baa191a40cd">calc_face_normal</a> (FaceHandle _fh) const</td></tr>
<tr class="memdesc:a76730c9a65bfd6cf23972baa191a40cd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate normal vector for face _fh.  <a href="#a76730c9a65bfd6cf23972baa191a40cd">More...</a><br /></td></tr>
<tr class="separator:a76730c9a65bfd6cf23972baa191a40cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a42bbd1939fb7e02ff36cd0fa9060b107"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a02389.html#a3570fd132d1ac589b380485cf59c9e0b">Normal</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a42bbd1939fb7e02ff36cd0fa9060b107">calc_face_normal</a> (const <a class="el" href="a02389.html#aed10fb4dfb536b53a5e20c8f2442eadf">Point</a> &amp;_p0, const <a class="el" href="a02389.html#aed10fb4dfb536b53a5e20c8f2442eadf">Point</a> &amp;_p1, const <a class="el" href="a02389.html#aed10fb4dfb536b53a5e20c8f2442eadf">Point</a> &amp;_p2) const</td></tr>
<tr class="memdesc:a42bbd1939fb7e02ff36cd0fa9060b107"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate normal vector for face (_p0, _p1, _p2).  <a href="#a42bbd1939fb7e02ff36cd0fa9060b107">More...</a><br /></td></tr>
<tr class="separator:a42bbd1939fb7e02ff36cd0fa9060b107"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7ab07fee2430d3e045f271695f806d6"><td class="memItemLeft" align="right" valign="top"><a id="af7ab07fee2430d3e045f271695f806d6"></a>
<a class="el" href="a02389.html#a3570fd132d1ac589b380485cf59c9e0b">Normal</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#af7ab07fee2430d3e045f271695f806d6">calc_normal</a> (FaceHandle _fh) const</td></tr>
<tr class="memdesc:af7ab07fee2430d3e045f271695f806d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">same as calc_face_normal <br /></td></tr>
<tr class="separator:af7ab07fee2430d3e045f271695f806d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a06df10e18858333ad0e7cf2ccb8b2109"><td class="memItemLeft" align="right" valign="top"><a id="a06df10e18858333ad0e7cf2ccb8b2109"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a06df10e18858333ad0e7cf2ccb8b2109">calc_face_centroid</a> (FaceHandle _fh, <a class="el" href="a02389.html#aed10fb4dfb536b53a5e20c8f2442eadf">Point</a> &amp;_pt) const</td></tr>
<tr class="memdesc:a06df10e18858333ad0e7cf2ccb8b2109"><td class="mdescLeft">&#160;</td><td class="mdescRight">calculates the average of the vertices defining _fh <br /></td></tr>
<tr class="separator:a06df10e18858333ad0e7cf2ccb8b2109"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a491e64d85f209fa74191fd96fe8f45cd"><td class="memItemLeft" align="right" valign="top"><a id="a491e64d85f209fa74191fd96fe8f45cd"></a>
<a class="el" href="a02389.html#aed10fb4dfb536b53a5e20c8f2442eadf">Point</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a491e64d85f209fa74191fd96fe8f45cd">calc_face_centroid</a> (FaceHandle _fh) const</td></tr>
<tr class="memdesc:a491e64d85f209fa74191fd96fe8f45cd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes and returns the average of the vertices defining _fh. <br /></td></tr>
<tr class="separator:a491e64d85f209fa74191fd96fe8f45cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a65fcc6edd32701b766ce4987f4e74e46"><td class="memItemLeft" align="right" valign="top"><a id="a65fcc6edd32701b766ce4987f4e74e46"></a>
<a class="el" href="a02389.html#aed10fb4dfb536b53a5e20c8f2442eadf">Point</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a65fcc6edd32701b766ce4987f4e74e46">calc_centroid</a> (FaceHandle _fh) const</td></tr>
<tr class="memdesc:a65fcc6edd32701b766ce4987f4e74e46"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes and returns the average of the vertices defining _fh (same as calc_face_centroid) <br /></td></tr>
<tr class="separator:a65fcc6edd32701b766ce4987f4e74e46"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a28a3023c9db2a0885d340c9d2f8e8172"><td class="memItemLeft" align="right" valign="top"><a id="a28a3023c9db2a0885d340c9d2f8e8172"></a>
<a class="el" href="a02389.html#aed10fb4dfb536b53a5e20c8f2442eadf">Point</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a28a3023c9db2a0885d340c9d2f8e8172">calc_centroid</a> (EdgeHandle _eh) const</td></tr>
<tr class="memdesc:a28a3023c9db2a0885d340c9d2f8e8172"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes and returns the average of the vertices defining _eh (same as calc_edge_midpoint) <br /></td></tr>
<tr class="separator:a28a3023c9db2a0885d340c9d2f8e8172"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7c743a16114e50e527a3046746a00146"><td class="memItemLeft" align="right" valign="top"><a id="a7c743a16114e50e527a3046746a00146"></a>
<a class="el" href="a02389.html#aed10fb4dfb536b53a5e20c8f2442eadf">Point</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a7c743a16114e50e527a3046746a00146">calc_centroid</a> (HalfedgeHandle _heh) const</td></tr>
<tr class="memdesc:a7c743a16114e50e527a3046746a00146"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes and returns the average of the vertices defining _heh (same as calc_edge_midpoint for edge of halfedge) <br /></td></tr>
<tr class="separator:a7c743a16114e50e527a3046746a00146"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a670143b09689e9e53fcdb9a37f7a434d"><td class="memItemLeft" align="right" valign="top"><a id="a670143b09689e9e53fcdb9a37f7a434d"></a>
<a class="el" href="a02389.html#aed10fb4dfb536b53a5e20c8f2442eadf">Point</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a670143b09689e9e53fcdb9a37f7a434d">calc_centroid</a> (<a class="el" href="a02389.html#a0fc18e13d70825938274e3faf7b55e01">VertexHandle</a> _vh) const</td></tr>
<tr class="memdesc:a670143b09689e9e53fcdb9a37f7a434d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the point of _vh. <br /></td></tr>
<tr class="separator:a670143b09689e9e53fcdb9a37f7a434d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a65c2ffb9241f8228db2dc7b63fc97f02"><td class="memItemLeft" align="right" valign="top"><a id="a65c2ffb9241f8228db2dc7b63fc97f02"></a>
<a class="el" href="a02389.html#aed10fb4dfb536b53a5e20c8f2442eadf">Point</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a65c2ffb9241f8228db2dc7b63fc97f02">calc_centroid</a> (<a class="el" href="a02257.html">MeshHandle</a> _mh) const</td></tr>
<tr class="memdesc:a65c2ffb9241f8228db2dc7b63fc97f02"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes and returns the average of the vertices defining the mesh. <br /></td></tr>
<tr class="separator:a65c2ffb9241f8228db2dc7b63fc97f02"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac98934e64388f212e03a66b39d0ee137"><td class="memItemLeft" align="right" valign="top"><a id="ac98934e64388f212e03a66b39d0ee137"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#ac98934e64388f212e03a66b39d0ee137">update_normal</a> (HalfedgeHandle _heh, const double _feature_angle=0.8)</td></tr>
<tr class="memdesc:ac98934e64388f212e03a66b39d0ee137"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update normal for halfedge _heh. <br /></td></tr>
<tr class="separator:ac98934e64388f212e03a66b39d0ee137"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a58045f9fafc6239077c747afdd8f852d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a58045f9fafc6239077c747afdd8f852d">update_halfedge_normals</a> (const double _feature_angle=0.8)</td></tr>
<tr class="memdesc:a58045f9fafc6239077c747afdd8f852d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update normal vectors for all halfedges.  <a href="#a58045f9fafc6239077c747afdd8f852d">More...</a><br /></td></tr>
<tr class="separator:a58045f9fafc6239077c747afdd8f852d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5c3bb9993fc45ec3ca26d677017f32f3"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="a02389.html#a3570fd132d1ac589b380485cf59c9e0b">Normal</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a5c3bb9993fc45ec3ca26d677017f32f3">calc_halfedge_normal</a> (HalfedgeHandle _heh, const double _feature_angle=0.8) const</td></tr>
<tr class="memdesc:a5c3bb9993fc45ec3ca26d677017f32f3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate halfedge normal for one specific halfedge.  <a href="#a5c3bb9993fc45ec3ca26d677017f32f3">More...</a><br /></td></tr>
<tr class="separator:a5c3bb9993fc45ec3ca26d677017f32f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8edf0652637619746808a8508a3203a4"><td class="memItemLeft" align="right" valign="top"><a id="a8edf0652637619746808a8508a3203a4"></a>
<a class="el" href="a02389.html#a3570fd132d1ac589b380485cf59c9e0b">Normal</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a8edf0652637619746808a8508a3203a4">calc_normal</a> (HalfedgeHandle, const double _feature_angle=0.8) const</td></tr>
<tr class="memdesc:a8edf0652637619746808a8508a3203a4"><td class="mdescLeft">&#160;</td><td class="mdescRight">same as calc_halfedge_normal <br /></td></tr>
<tr class="separator:a8edf0652637619746808a8508a3203a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a98e626927ab0d71cef18df58be2e212e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a98e626927ab0d71cef18df58be2e212e">is_estimated_feature_edge</a> (HalfedgeHandle _heh, const double _feature_angle) const</td></tr>
<tr class="memdesc:a98e626927ab0d71cef18df58be2e212e"><td class="mdescLeft">&#160;</td><td class="mdescRight">identifies feature edges w.r.t.  <a href="#a98e626927ab0d71cef18df58be2e212e">More...</a><br /></td></tr>
<tr class="separator:a98e626927ab0d71cef18df58be2e212e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8f33200ba959d2d68e62d0cdf0afe322"><td class="memItemLeft" align="right" valign="top"><a id="a8f33200ba959d2d68e62d0cdf0afe322"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a8f33200ba959d2d68e62d0cdf0afe322">update_normal</a> (<a class="el" href="a02389.html#a0fc18e13d70825938274e3faf7b55e01">VertexHandle</a> _vh)</td></tr>
<tr class="memdesc:a8f33200ba959d2d68e62d0cdf0afe322"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update normal for vertex _vh. <br /></td></tr>
<tr class="separator:a8f33200ba959d2d68e62d0cdf0afe322"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acbf60ccc42cb484ba2911bda8277551c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#acbf60ccc42cb484ba2911bda8277551c">update_vertex_normals</a> ()</td></tr>
<tr class="memdesc:acbf60ccc42cb484ba2911bda8277551c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update normal vectors for all vertices.  <a href="#acbf60ccc42cb484ba2911bda8277551c">More...</a><br /></td></tr>
<tr class="separator:acbf60ccc42cb484ba2911bda8277551c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aff1c0021e05ecba42d7b960add51757c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a02389.html#a3570fd132d1ac589b380485cf59c9e0b">Normal</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#aff1c0021e05ecba42d7b960add51757c">calc_vertex_normal</a> (<a class="el" href="a02389.html#a0fc18e13d70825938274e3faf7b55e01">VertexHandle</a> _vh) const</td></tr>
<tr class="memdesc:aff1c0021e05ecba42d7b960add51757c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate vertex normal for one specific vertex.  <a href="#aff1c0021e05ecba42d7b960add51757c">More...</a><br /></td></tr>
<tr class="separator:aff1c0021e05ecba42d7b960add51757c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a274a5ec813ccbd19c775740df6bae995"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a274a5ec813ccbd19c775740df6bae995">calc_vertex_normal_fast</a> (<a class="el" href="a02389.html#a0fc18e13d70825938274e3faf7b55e01">VertexHandle</a> _vh, <a class="el" href="a02389.html#a3570fd132d1ac589b380485cf59c9e0b">Normal</a> &amp;_n) const</td></tr>
<tr class="memdesc:a274a5ec813ccbd19c775740df6bae995"><td class="mdescLeft">&#160;</td><td class="mdescRight">Different methods for calculation of the normal at _vh:  <a href="#a274a5ec813ccbd19c775740df6bae995">More...</a><br /></td></tr>
<tr class="separator:a274a5ec813ccbd19c775740df6bae995"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2873b741c59a9d3f3a7eb61f996017e0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a2873b741c59a9d3f3a7eb61f996017e0">calc_vertex_normal_correct</a> (<a class="el" href="a02389.html#a0fc18e13d70825938274e3faf7b55e01">VertexHandle</a> _vh, <a class="el" href="a02389.html#a3570fd132d1ac589b380485cf59c9e0b">Normal</a> &amp;_n) const</td></tr>
<tr class="memdesc:a2873b741c59a9d3f3a7eb61f996017e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compute normals for all primitives.  <a href="#a2873b741c59a9d3f3a7eb61f996017e0">More...</a><br /></td></tr>
<tr class="separator:a2873b741c59a9d3f3a7eb61f996017e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac18dd8b978ee432fae67524b3a181c14"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#ac18dd8b978ee432fae67524b3a181c14">calc_vertex_normal_loop</a> (<a class="el" href="a02389.html#a0fc18e13d70825938274e3faf7b55e01">VertexHandle</a> _vh, <a class="el" href="a02389.html#a3570fd132d1ac589b380485cf59c9e0b">Normal</a> &amp;_n) const</td></tr>
<tr class="memdesc:ac18dd8b978ee432fae67524b3a181c14"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compute normals for all primitives.  <a href="#ac18dd8b978ee432fae67524b3a181c14">More...</a><br /></td></tr>
<tr class="separator:ac18dd8b978ee432fae67524b3a181c14"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae7d14515e2de903d10c50ae23c83e963"><td class="memItemLeft" align="right" valign="top"><a id="ae7d14515e2de903d10c50ae23c83e963"></a>
<a class="el" href="a02389.html#a3570fd132d1ac589b380485cf59c9e0b">Normal</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#ae7d14515e2de903d10c50ae23c83e963">calc_normal</a> (<a class="el" href="a02389.html#a0fc18e13d70825938274e3faf7b55e01">VertexHandle</a> _vh) const</td></tr>
<tr class="memdesc:ae7d14515e2de903d10c50ae23c83e963"><td class="mdescLeft">&#160;</td><td class="mdescRight">same as calc_vertex_normal_correct <br /></td></tr>
<tr class="separator:ae7d14515e2de903d10c50ae23c83e963"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5d0ff00a35aa4b3ebfa554441def1334"><td class="memItemLeft" align="right" valign="top"><a id="a5d0ff00a35aa4b3ebfa554441def1334"></a>enum &#160;</td><td class="memItemRight" valign="bottom">{ <b>IsPolyMesh</b> = 1
 }<tr class="memdesc:a5d0ff00a35aa4b3ebfa554441def1334"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determine whether this is a <a class="el" href="a02389.html" title="Base type for a polygonal mesh. ">PolyMeshT</a> or <a class="el" href="a02489.html" title="Base type for a triangle mesh. ">TriMeshT</a> (This function does not check the per face vertex count! It only checks if the datatype is <a class="el" href="a02389.html" title="Base type for a polygonal mesh. ">PolyMeshT</a> or <a class="el" href="a02489.html" title="Base type for a triangle mesh. ">TriMeshT</a>) <br /></td></tr>
</td></tr>
<tr class="separator:a5d0ff00a35aa4b3ebfa554441def1334"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab049a82d0fafc6b5e81936c8debc9952"><td class="memItemLeft" align="right" valign="top"><a id="ab049a82d0fafc6b5e81936c8debc9952"></a>enum &#160;</td><td class="memItemRight" valign="bottom">{ <b>IsTriMesh</b> = 0
 }<tr class="memdesc:ab049a82d0fafc6b5e81936c8debc9952"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determine whether this is a <a class="el" href="a02389.html" title="Base type for a polygonal mesh. ">PolyMeshT</a> or <a class="el" href="a02489.html" title="Base type for a triangle mesh. ">TriMeshT</a> (This function does not check the per face vertex count! It only checks if the datatype is <a class="el" href="a02389.html" title="Base type for a polygonal mesh. ">PolyMeshT</a> or <a class="el" href="a02489.html" title="Base type for a triangle mesh. ">TriMeshT</a>) <br /></td></tr>
</td></tr>
<tr class="separator:ab049a82d0fafc6b5e81936c8debc9952"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac317b3cb6c4bbee869440ec859d49c81"><td class="memItemLeft" align="right" valign="top"><a id="ac317b3cb6c4bbee869440ec859d49c81"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#ac317b3cb6c4bbee869440ec859d49c81">ConnectivityTag</a> = <a class="el" href="a02461.html">PolyConnectivityTag</a></td></tr>
<tr class="memdesc:ac317b3cb6c4bbee869440ec859d49c81"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determine whether this is a <a class="el" href="a02389.html" title="Base type for a polygonal mesh. ">PolyMeshT</a> or <a class="el" href="a02489.html" title="Base type for a triangle mesh. ">TriMeshT</a> (This function does not check the per face vertex count! It only checks if the datatype is <a class="el" href="a02389.html" title="Base type for a polygonal mesh. ">PolyMeshT</a> or <a class="el" href="a02489.html" title="Base type for a triangle mesh. ">TriMeshT</a>) <br /></td></tr>
<tr class="separator:ac317b3cb6c4bbee869440ec859d49c81"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a33d15d135e70be103b2d1c96e15b378c"><td class="memItemLeft" align="right" valign="top"><a id="a33d15d135e70be103b2d1c96e15b378c"></a>
static constexpr bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a33d15d135e70be103b2d1c96e15b378c">is_polymesh</a> ()</td></tr>
<tr class="memdesc:a33d15d135e70be103b2d1c96e15b378c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determine whether this is a <a class="el" href="a02389.html" title="Base type for a polygonal mesh. ">PolyMeshT</a> or <a class="el" href="a02489.html" title="Base type for a triangle mesh. ">TriMeshT</a> (This function does not check the per face vertex count! It only checks if the datatype is <a class="el" href="a02389.html" title="Base type for a polygonal mesh. ">PolyMeshT</a> or <a class="el" href="a02489.html" title="Base type for a triangle mesh. ">TriMeshT</a>) <br /></td></tr>
<tr class="separator:a33d15d135e70be103b2d1c96e15b378c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a928ad49d12f4429692dbb6be5d8ef393"><td class="memItemLeft" align="right" valign="top"><a id="a928ad49d12f4429692dbb6be5d8ef393"></a>
static constexpr bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a02389.html#a928ad49d12f4429692dbb6be5d8ef393">is_trimesh</a> ()</td></tr>
<tr class="memdesc:a928ad49d12f4429692dbb6be5d8ef393"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determine whether this is a <a class="el" href="a02389.html" title="Base type for a polygonal mesh. ">PolyMeshT</a> or <a class="el" href="a02489.html" title="Base type for a triangle mesh. ">TriMeshT</a> (This function does not check the per face vertex count! It only checks if the datatype is <a class="el" href="a02389.html" title="Base type for a polygonal mesh. ">PolyMeshT</a> or <a class="el" href="a02489.html" title="Base type for a triangle mesh. ">TriMeshT</a>) <br /></td></tr>
<tr class="separator:a928ad49d12f4429692dbb6be5d8ef393"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template&lt;class Kernel&gt;<br />
class OpenMesh::PolyMeshT&lt; Kernel &gt;</h3>

<p>Base type for a polygonal mesh. </p>
<p>This is the base class for a polygonal mesh. It is parameterized by a mesh kernel that is given as a template argument. This class inherits all methods from its mesh kernel.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">Kernel</td><td>template argument for the mesh kernel </td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>You should use the predefined mesh-kernel combinations in <a class="el" href="a01230.html">Predefined Mesh Types</a> </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="a04324.html">Specifying your MyMesh</a> </dd></dl>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="afe704b0dc13787fbc73913a39d168d53"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afe704b0dc13787fbc73913a39d168d53">&#9670;&nbsp;</a></span>calc_dihedral_angle_fast() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class Kernel&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a02389.html#a15372f27edf521d8e9028e2abccae342">Scalar</a> <a class="el" href="a02389.html">OpenMesh::PolyMeshT</a>&lt; Kernel &gt;::calc_dihedral_angle_fast </td>
          <td>(</td>
          <td class="paramtype">HalfedgeHandle&#160;</td>
          <td class="paramname"><em>_heh</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>calculates the dihedral angle on the halfedge _heh </p>
<dl class="section attention"><dt>Attention</dt><dd>Needs the <a class="el" href="a01238.html#ab78a93560926cd2f9958cb028f7ea96da213616dd2e4d9744d863587001a77988" title="Add normals to mesh item (vertices/faces) ">Attributes::Normal</a> attribute for faces </dd></dl>

</div>
</div>
<a id="ab8cd3845b89840da203e1347f68516f2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab8cd3845b89840da203e1347f68516f2">&#9670;&nbsp;</a></span>calc_dihedral_angle_fast() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class Kernel&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a02389.html#a15372f27edf521d8e9028e2abccae342">Scalar</a> <a class="el" href="a02389.html">OpenMesh::PolyMeshT</a>&lt; Kernel &gt;::calc_dihedral_angle_fast </td>
          <td>(</td>
          <td class="paramtype">EdgeHandle&#160;</td>
          <td class="paramname"><em>_eh</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>calculates the dihedral angle on the edge _eh </p>
<dl class="section attention"><dt>Attention</dt><dd>Needs the <a class="el" href="a01238.html#ab78a93560926cd2f9958cb028f7ea96da213616dd2e4d9744d863587001a77988" title="Add normals to mesh item (vertices/faces) ">Attributes::Normal</a> attribute for faces </dd></dl>

</div>
</div>
<a id="a76730c9a65bfd6cf23972baa191a40cd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a76730c9a65bfd6cf23972baa191a40cd">&#9670;&nbsp;</a></span>calc_face_normal() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class Kernel &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a02389.html">PolyMeshT</a>&lt; Kernel &gt;::<a class="el" href="a02389.html#a3570fd132d1ac589b380485cf59c9e0b">Normal</a> <a class="el" href="a02389.html">OpenMesh::PolyMeshT</a>&lt; Kernel &gt;::calc_face_normal </td>
          <td>(</td>
          <td class="paramtype">FaceHandle&#160;</td>
          <td class="paramname"><em>_fh</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Calculate normal vector for face _fh. </p>

<p>Reimplemented in <a class="el" href="a02489.html#a34d9ca17136124593dcc494cfaccdfe5">OpenMesh::TriMeshT&lt; Kernel &gt;</a>.</p>

</div>
</div>
<a id="a42bbd1939fb7e02ff36cd0fa9060b107"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a42bbd1939fb7e02ff36cd0fa9060b107">&#9670;&nbsp;</a></span>calc_face_normal() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class Kernel &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a02389.html">PolyMeshT</a>&lt; Kernel &gt;::<a class="el" href="a02389.html#a3570fd132d1ac589b380485cf59c9e0b">Normal</a> <a class="el" href="a02389.html">OpenMesh::PolyMeshT</a>&lt; Kernel &gt;::calc_face_normal </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a02389.html#aed10fb4dfb536b53a5e20c8f2442eadf">Point</a> &amp;&#160;</td>
          <td class="paramname"><em>_p0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="a02389.html#aed10fb4dfb536b53a5e20c8f2442eadf">Point</a> &amp;&#160;</td>
          <td class="paramname"><em>_p1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="a02389.html#aed10fb4dfb536b53a5e20c8f2442eadf">Point</a> &amp;&#160;</td>
          <td class="paramname"><em>_p2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Calculate normal vector for face (_p0, _p1, _p2). </p>

</div>
</div>
<a id="a5c3bb9993fc45ec3ca26d677017f32f3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5c3bb9993fc45ec3ca26d677017f32f3">&#9670;&nbsp;</a></span>calc_halfedge_normal()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class Kernel &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a02389.html">PolyMeshT</a>&lt; Kernel &gt;::<a class="el" href="a02389.html#a3570fd132d1ac589b380485cf59c9e0b">Normal</a> <a class="el" href="a02389.html">OpenMesh::PolyMeshT</a>&lt; Kernel &gt;::calc_halfedge_normal </td>
          <td>(</td>
          <td class="paramtype">HalfedgeHandle&#160;</td>
          <td class="paramname"><em>_heh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>_feature_angle</em> = <code>0.8</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Calculate halfedge normal for one specific halfedge. </p>
<p>Calculate normal vector for halfedge _heh.</p>
<dl class="section note"><dt>Note</dt><dd>Face normals have to be computed first!</dd></dl>
<dl class="section attention"><dt>Attention</dt><dd>Needs the <a class="el" href="a01238.html#ab78a93560926cd2f9958cb028f7ea96da213616dd2e4d9744d863587001a77988" title="Add normals to mesh item (vertices/faces) ">Attributes::Normal</a> attribute for faces and vertices. Call request_face_normals() and request_halfedge_normals() before using it!</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">_heh</td><td>Handle of the halfedge </td></tr>
    <tr><td class="paramname">_feature_angle</td><td>If the dihedral angle across this edge is greater than this value, the edge is considered as a feature edge (angle in radians) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a5d3d49f23d5be7cebd2107a6363bcedd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5d3d49f23d5be7cebd2107a6363bcedd">&#9670;&nbsp;</a></span>calc_sector_angle()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class Kernel&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a02389.html#a15372f27edf521d8e9028e2abccae342">Scalar</a> <a class="el" href="a02389.html">OpenMesh::PolyMeshT</a>&lt; Kernel &gt;::calc_sector_angle </td>
          <td>(</td>
          <td class="paramtype">HalfedgeHandle&#160;</td>
          <td class="paramname"><em>_in_heh</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>calculates the sector angle. </p>
<p><br />
The vertex pointed by _in_heh defines the sector center The angle will be calculated between the given halfedge and the next halfedge.<br />
Seen from the center vertex this will be the next halfedge in clockwise direction.<br />
 NOTE: only boundary concave sectors are treated correctly </p>

</div>
</div>
<a id="a4babf1e8370fcb01b07596819ac167dc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4babf1e8370fcb01b07596819ac167dc">&#9670;&nbsp;</a></span>calc_sector_area()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class Kernel&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a02389.html#a15372f27edf521d8e9028e2abccae342">Scalar</a> <a class="el" href="a02389.html">OpenMesh::PolyMeshT</a>&lt; Kernel &gt;::calc_sector_area </td>
          <td>(</td>
          <td class="paramtype">HalfedgeHandle&#160;</td>
          <td class="paramname"><em>_in_heh</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>calculates the area of the face sector defined by the angle &lt;(_in_heh,next_halfedge(_in_heh)) NOTE: special cases (e.g. </p>
<p>concave sectors) are not handled correctly </p>

</div>
</div>
<a id="a96377dfb9dca48a0648b5c0698795e1a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a96377dfb9dca48a0648b5c0698795e1a">&#9670;&nbsp;</a></span>calc_sector_vectors()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class Kernel&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="a02389.html">OpenMesh::PolyMeshT</a>&lt; Kernel &gt;::calc_sector_vectors </td>
          <td>(</td>
          <td class="paramtype">HalfedgeHandle&#160;</td>
          <td class="paramname"><em>_in_heh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a02389.html#a3570fd132d1ac589b380485cf59c9e0b">Normal</a> &amp;&#160;</td>
          <td class="paramname"><em>_vec0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a02389.html#a3570fd132d1ac589b380485cf59c9e0b">Normal</a> &amp;&#160;</td>
          <td class="paramname"><em>_vec1</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>defines a consistent representation of a sector geometry: the halfedge _in_heh defines the sector orientation the vertex pointed by _in_heh defines the sector center _vec0 and _vec1 are resp. </p>
<p>the first and the second vectors defining the sector </p>

</div>
</div>
<a id="aff1c0021e05ecba42d7b960add51757c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aff1c0021e05ecba42d7b960add51757c">&#9670;&nbsp;</a></span>calc_vertex_normal()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class Kernel &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a02389.html">PolyMeshT</a>&lt; Kernel &gt;::<a class="el" href="a02389.html#a3570fd132d1ac589b380485cf59c9e0b">Normal</a> <a class="el" href="a02389.html">OpenMesh::PolyMeshT</a>&lt; Kernel &gt;::calc_vertex_normal </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a02389.html#a0fc18e13d70825938274e3faf7b55e01">VertexHandle</a>&#160;</td>
          <td class="paramname"><em>_vh</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Calculate vertex normal for one specific vertex. </p>
<p>Calculate normal vector for vertex _vh by averaging normals of adjacent faces.</p>
<dl class="section note"><dt>Note</dt><dd>Face normals have to be computed first!</dd></dl>
<dl class="section attention"><dt>Attention</dt><dd>Needs the <a class="el" href="a01238.html#ab78a93560926cd2f9958cb028f7ea96da213616dd2e4d9744d863587001a77988" title="Add normals to mesh item (vertices/faces) ">Attributes::Normal</a> attribute for faces and vertices. Call request_face_normals() and request_vertex_normals() before using it!</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">_vh</td><td>Handle of the vertex </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a2873b741c59a9d3f3a7eb61f996017e0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2873b741c59a9d3f3a7eb61f996017e0">&#9670;&nbsp;</a></span>calc_vertex_normal_correct()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class Kernel &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="a02389.html">OpenMesh::PolyMeshT</a>&lt; Kernel &gt;::calc_vertex_normal_correct </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a02389.html#a0fc18e13d70825938274e3faf7b55e01">VertexHandle</a>&#160;</td>
          <td class="paramname"><em>_vh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a02389.html#a3570fd132d1ac589b380485cf59c9e0b">Normal</a> &amp;&#160;</td>
          <td class="paramname"><em>_n</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Compute normals for all primitives. </p>
<p>Calls <a class="el" href="a02389.html#a5677ec057717fece1bc3c7abbf93cbdf" title="Update normal vectors for all faces. ">update_face_normals()</a> , <a class="el" href="a02389.html#a58045f9fafc6239077c747afdd8f852d" title="Update normal vectors for all halfedges. ">update_halfedge_normals()</a> and <a class="el" href="a02389.html#acbf60ccc42cb484ba2911bda8277551c" title="Update normal vectors for all vertices. ">update_vertex_normals()</a> if the normals (i.e. the properties) exist.</p>
<dl class="section note"><dt>Note</dt><dd>Face normals are required to compute vertex and halfedge normals! </dd></dl>

</div>
</div>
<a id="a274a5ec813ccbd19c775740df6bae995"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a274a5ec813ccbd19c775740df6bae995">&#9670;&nbsp;</a></span>calc_vertex_normal_fast()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class Kernel &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="a02389.html">OpenMesh::PolyMeshT</a>&lt; Kernel &gt;::calc_vertex_normal_fast </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a02389.html#a0fc18e13d70825938274e3faf7b55e01">VertexHandle</a>&#160;</td>
          <td class="paramname"><em>_vh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a02389.html#a3570fd132d1ac589b380485cf59c9e0b">Normal</a> &amp;&#160;</td>
          <td class="paramname"><em>_n</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Different methods for calculation of the normal at _vh: </p>
<ul>
<li>..._fast - the default one - the same as calc vertex_normal()<ul>
<li>needs the <a class="el" href="a01238.html#ab78a93560926cd2f9958cb028f7ea96da213616dd2e4d9744d863587001a77988" title="Add normals to mesh item (vertices/faces) ">Attributes::Normal</a> attribute for faces</li>
</ul>
</li>
<li>..._correct - works properly for non-triangular meshes<ul>
<li>does not need any attributes</li>
</ul>
</li>
<li>..._loop - calculates loop surface normals<ul>
<li>does not need any attributes </li>
</ul>
</li>
</ul>

</div>
</div>
<a id="ac18dd8b978ee432fae67524b3a181c14"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac18dd8b978ee432fae67524b3a181c14">&#9670;&nbsp;</a></span>calc_vertex_normal_loop()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class Kernel &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="a02389.html">OpenMesh::PolyMeshT</a>&lt; Kernel &gt;::calc_vertex_normal_loop </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a02389.html#a0fc18e13d70825938274e3faf7b55e01">VertexHandle</a>&#160;</td>
          <td class="paramname"><em>_vh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a02389.html#a3570fd132d1ac589b380485cf59c9e0b">Normal</a> &amp;&#160;</td>
          <td class="paramname"><em>_n</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Compute normals for all primitives. </p>
<p>Calls <a class="el" href="a02389.html#a5677ec057717fece1bc3c7abbf93cbdf" title="Update normal vectors for all faces. ">update_face_normals()</a> , <a class="el" href="a02389.html#a58045f9fafc6239077c747afdd8f852d" title="Update normal vectors for all halfedges. ">update_halfedge_normals()</a> and <a class="el" href="a02389.html#acbf60ccc42cb484ba2911bda8277551c" title="Update normal vectors for all vertices. ">update_vertex_normals()</a> if the normals (i.e. the properties) exist.</p>
<dl class="section note"><dt>Note</dt><dd>Face normals are required to compute vertex and halfedge normals! </dd></dl>

</div>
</div>
<a id="a98e626927ab0d71cef18df58be2e212e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a98e626927ab0d71cef18df58be2e212e">&#9670;&nbsp;</a></span>is_estimated_feature_edge()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class Kernel &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="a02389.html">OpenMesh::PolyMeshT</a>&lt; Kernel &gt;::is_estimated_feature_edge </td>
          <td>(</td>
          <td class="paramtype">HalfedgeHandle&#160;</td>
          <td class="paramname"><em>_heh</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>_feature_angle</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>identifies feature edges w.r.t. </p>
<p>the minimal dihedral angle for feature edges (in radians) and the status feature tag </p>

</div>
</div>
<a id="a4021a6310529dac06a6969967a7d3986"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4021a6310529dac06a6969967a7d3986">&#9670;&nbsp;</a></span>new_vertex() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class Kernel&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a02405.html">SmartVertexHandle</a> <a class="el" href="a02389.html">OpenMesh::PolyMeshT</a>&lt; Kernel &gt;::new_vertex </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Uses default copy and assignment operator. </p>
<p>Use them to assign two meshes of <b>equal</b> type. If the mesh types vary, use PolyMeshT::assign() instead. Adds a new default-initialized vertex.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="a02389.html#a7458a95c0f4512e7e571edc18b1b839b" title="Adds a new vertex initialized to a custom position. ">new_vertex(const Point&amp;)</a>, <a class="el" href="a02389.html#ae805ccd544a6b1e3b7c963e15eff7afd" title="Same as new_vertex(const Point&amp;) but never shrinks, only enlarges the vertex property vectors...">new_vertex_dirty()</a> </dd></dl>

</div>
</div>
<a id="a7458a95c0f4512e7e571edc18b1b839b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7458a95c0f4512e7e571edc18b1b839b">&#9670;&nbsp;</a></span>new_vertex() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class Kernel&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a02405.html">SmartVertexHandle</a> <a class="el" href="a02389.html">OpenMesh::PolyMeshT</a>&lt; Kernel &gt;::new_vertex </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a02389.html#aed10fb4dfb536b53a5e20c8f2442eadf">Point</a> &amp;&#160;</td>
          <td class="paramname"><em>_p</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Adds a new vertex initialized to a custom position. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="a02389.html#a4021a6310529dac06a6969967a7d3986" title="Uses default copy and assignment operator. ">new_vertex()</a>, <a class="el" href="a02389.html#ae805ccd544a6b1e3b7c963e15eff7afd" title="Same as new_vertex(const Point&amp;) but never shrinks, only enlarges the vertex property vectors...">new_vertex_dirty()</a> </dd></dl>

</div>
</div>
<a id="ae805ccd544a6b1e3b7c963e15eff7afd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae805ccd544a6b1e3b7c963e15eff7afd">&#9670;&nbsp;</a></span>new_vertex_dirty()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class Kernel&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a02405.html">SmartVertexHandle</a> <a class="el" href="a02389.html">OpenMesh::PolyMeshT</a>&lt; Kernel &gt;::new_vertex_dirty </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a02389.html#aed10fb4dfb536b53a5e20c8f2442eadf">Point</a> &amp;&#160;</td>
          <td class="paramname"><em>_p</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Same as <a class="el" href="a02389.html#a7458a95c0f4512e7e571edc18b1b839b" title="Adds a new vertex initialized to a custom position. ">new_vertex(const Point&amp;)</a> but never shrinks, only enlarges the vertex property vectors. </p>
<p>If you are rebuilding a mesh that you erased with <a class="el" href="a02113.html#a04957ea762a7b0ff4fc3faac13c20fa4" title="Remove all vertices, edges and faces and deallocates their memory. ">ArrayKernel::clean()</a> or <a class="el" href="a02113.html#aeb0af6fdeb2a51da1219cc1ddb84f201" title="Remove all vertices, edges and faces but keep memory allocated. ">ArrayKernel::clean_keep_reservation()</a> using this method instead of <a class="el" href="a02389.html#a7458a95c0f4512e7e571edc18b1b839b" title="Adds a new vertex initialized to a custom position. ">new_vertex(const Point &amp;)</a> saves reallocation and reinitialization of property memory.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="a02389.html#a7458a95c0f4512e7e571edc18b1b839b" title="Adds a new vertex initialized to a custom position. ">new_vertex(const Point &amp;)</a> </dd></dl>

</div>
</div>
<a id="a5677ec057717fece1bc3c7abbf93cbdf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5677ec057717fece1bc3c7abbf93cbdf">&#9670;&nbsp;</a></span>update_face_normals()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class Kernel &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="a02389.html">OpenMesh::PolyMeshT</a>&lt; Kernel &gt;::update_face_normals </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Update normal vectors for all faces. </p>
<dl class="section attention"><dt>Attention</dt><dd>Needs the <a class="el" href="a01238.html#ab78a93560926cd2f9958cb028f7ea96da213616dd2e4d9744d863587001a77988" title="Add normals to mesh item (vertices/faces) ">Attributes::Normal</a> attribute for faces. Call request_face_normals() before using it! </dd></dl>

</div>
</div>
<a id="a58045f9fafc6239077c747afdd8f852d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a58045f9fafc6239077c747afdd8f852d">&#9670;&nbsp;</a></span>update_halfedge_normals()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class Kernel &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="a02389.html">OpenMesh::PolyMeshT</a>&lt; Kernel &gt;::update_halfedge_normals </td>
          <td>(</td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>_feature_angle</em> = <code>0.8</code></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Update normal vectors for all halfedges. </p>
<p>Uses the existing face normals to compute halfedge normals</p>
<dl class="section note"><dt>Note</dt><dd>Face normals have to be computed first!</dd></dl>
<dl class="section attention"><dt>Attention</dt><dd>Needs the <a class="el" href="a01238.html#ab78a93560926cd2f9958cb028f7ea96da213616dd2e4d9744d863587001a77988" title="Add normals to mesh item (vertices/faces) ">Attributes::Normal</a> attribute for faces and halfedges. Call request_face_normals() and request_halfedge_normals() before using it! </dd></dl>

</div>
</div>
<a id="a601f21014e50bd5a2243b0e4849c9c14"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a601f21014e50bd5a2243b0e4849c9c14">&#9670;&nbsp;</a></span>update_normals()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class Kernel &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="a02389.html">OpenMesh::PolyMeshT</a>&lt; Kernel &gt;::update_normals </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Compute normals for all primitives. </p>
<p>Calls <a class="el" href="a02389.html#a5677ec057717fece1bc3c7abbf93cbdf" title="Update normal vectors for all faces. ">update_face_normals()</a> , <a class="el" href="a02389.html#a58045f9fafc6239077c747afdd8f852d" title="Update normal vectors for all halfedges. ">update_halfedge_normals()</a> and <a class="el" href="a02389.html#acbf60ccc42cb484ba2911bda8277551c" title="Update normal vectors for all vertices. ">update_vertex_normals()</a> if the normals (i.e. the properties) exist.</p>
<dl class="section note"><dt>Note</dt><dd>Face normals are required to compute vertex and halfedge normals! </dd></dl>

</div>
</div>
<a id="acbf60ccc42cb484ba2911bda8277551c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acbf60ccc42cb484ba2911bda8277551c">&#9670;&nbsp;</a></span>update_vertex_normals()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class Kernel &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="a02389.html">OpenMesh::PolyMeshT</a>&lt; Kernel &gt;::update_vertex_normals </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Update normal vectors for all vertices. </p>
<p>Uses existing face normals to calculate new vertex normals.</p>
<dl class="section note"><dt>Note</dt><dd>Face normals have to be computed first!</dd></dl>
<dl class="section attention"><dt>Attention</dt><dd>Needs the <a class="el" href="a01238.html#ab78a93560926cd2f9958cb028f7ea96da213616dd2e4d9744d863587001a77988" title="Add normals to mesh item (vertices/faces) ">Attributes::Normal</a> attribute for faces and vertices. Call request_face_normals() and request_vertex_normals() before using it! </dd></dl>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>OpenMesh/Core/Mesh/<a class="el" href="a00386_source.html">PolyMeshT.hh</a></li>
<li>OpenMesh/Core/Mesh/<a class="el" href="a00389_source.html">PolyMeshT_impl.hh</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<hr>
<address>
<small>
<a href="http://www.rwth-graphics.de" style="text-decoration:none;">
</a>
Project <b>OpenMesh</b>, 
&copy;&nbsp; Computer Graphics Group, RWTH Aachen.
Documentation generated using 
<a class="el" href="http://www.doxygen.org/index.html">
<b>doxygen</b>
</a>.
</small>
</address>
</body>
</html>
